/**
 * 
 */
package com.erbaoshen.action;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

import com.erbaoshen.model.Command;
import com.erbaoshen.model.FileModel;
import com.erbaoshen.util.ErBaoEmailUtil;
import com.erbaoshen.util.ErBaoFastJsonUtil;
import com.erbaoshen.util.ErBaoFileUtil;

/**
 * @author Administrator
 * 文件动作
 * 	获取文件
 * 	获取文件夹目录
 * 	删除文件
 * 	
 * 	
 */
public class FileAction {
	/**
	 * 获取单个文件
	 * @param command
	 */
	public static void get(Command command) {
		String content = command.getContent();
		ArrayList<File> fileList = new ArrayList<File>();
		File file = new File(content);
		// 判断文件是否存在
		if (file.exists() && file.isFile()) {
			// 文件大小
			String fileSize = ErBaoFileUtil.byteCountToDisplaySize(file);
			
			FileModel fileModel = new FileModel();
			fileModel.setName(file.getName());
			fileModel.setPath(file.getPath());
			fileModel.setSize(fileSize);
			fileModel.setCanRead(file.canRead());
			fileModel.setCanWrite(file.canWrite());
			content += ErBaoFastJsonUtil.toJSONNoFeatures(fileModel); // 将文件信息放入邮件主体内容中。
			
			fileList.add(file);
		}else {
			content += " 文件不存在或不是文件!"; // 文件大小
		}
		// 发送邮件
		ErBaoEmailUtil.send(fileList, content, null);
	}
	
	/**
	 * 获取多个文件
	 * @param command
	 */
	public static void list(Command command) {
		String content = command.getContent();
		ArrayList<File> fileList = new ArrayList<File>();
		ArrayList<FileModel> fileModelList = new ArrayList<FileModel>();
		// 指令集合
		List<String> contentList = Arrays.asList(StringUtils.split(content, ","));
		if (contentList == null || contentList.size() < 1) {
			content += " 指令集合为空!"; // 指令集合为空
		}else {
			int len = contentList.size();
			for (int i = 0; i < len; i++) {
				String path = contentList.get(i);
				File file = new File(path);
				if (file.exists() && file.isFile()) {
					// 文件大小
					String fileSize = ErBaoFileUtil.byteCountToDisplaySize(file);
					
					FileModel fileModel = new FileModel();
					fileModel.setName(file.getName());
					fileModel.setPath(file.getPath());
					fileModel.setSize(fileSize);
					fileModel.setCanRead(file.canRead());
					fileModel.setCanWrite(file.canWrite());
					
					fileModelList.add(fileModel);
					fileList.add(file);
				}else {
					// 文件不存在
					FileModel fileModel = new FileModel();
					fileModel.setName(file.getName());
					fileModel.setPath(file.getPath() + " 文件不存在或不是文件!");
					fileModelList.add(fileModel);
				}
			}
			// 将文件信息放入邮件主体内容中。
			content += ErBaoFastJsonUtil.toJSONNoFeatures(fileModelList);
		}
		
		// 发送邮件
		ErBaoEmailUtil.send(fileList, content, null);
	}
	
	/**
	 * 获取文件夹下的文件
	 * @param command
	 */
	public static void listByFolder(Command command) {
		String content = command.getContent();
		ArrayList<File> fileList = new ArrayList<File>();
		File dir = new File(content);
		// 判断文件夹是否存在
		if (dir.exists() && dir.isDirectory()) {
			File[] files = dir.listFiles();
			if (files !=null && files.length > 0) {
				ArrayList<FileModel> fileModelList = new ArrayList<FileModel>();
				for (File file : files) {
					// 文件大小
					String fileSize = ErBaoFileUtil.byteCountToDisplaySize(file);
					
					FileModel fileModel = new FileModel();
					fileModel.setName(file.getName());
					fileModel.setPath(file.getPath());
					fileModel.setSize(fileSize);
					fileModel.setCanRead(file.canRead());
					fileModel.setCanWrite(file.canWrite());
					
					fileModelList.add(fileModel);
					fileList.add(file);
				}
				// 将文件信息放入邮件主体内容中。
				content += ErBaoFastJsonUtil.toJSONNoFeatures(fileModelList);
			}else {
				content += " 文件夹下没有文件或文件夹!";
			}
		}else {
			content += " 文件夹不存在或不是 文件夹!"; // 文件大小
		}
		// 发送邮件
		ErBaoEmailUtil.send(fileList, content, null);
	}
	
}
